package itsm.isperp.framework.service;

import itsm.isperp.framework.domain.IRole;
import itsm.isperp.framework.domain.IUser;
import itsm.isperp.framework.security.domain.MemberRole;

import java.util.List;

import com.fr.report.core.A.S;

/**
 * 用户服务接口
 */
public interface IUserService {
	/**
	 * 查询所有用户
	 * 
	 * @return 用户集合
	 */
	public List<? extends IUser> findAll();

	/**
	 * 根据用户名，找到对应的User对象
	 * 
	 * @param username
	 *            给出的用户名
	 * @return User对象
	 */
	public IUser findByUsername(String username, String... selectColumns);

	/**
	 * 根据部门Id返回一个相符的用户列表
	 * 
	 * @param deptId
	 *            部门Id
	 * @return 相符合的用户列表
	 */
	public List<? extends IUser> findByDeptId(String deptId,
			String... selectColumns);

	/**
	 * 根据职位返回一个相符的用户列表
	 * 
	 * @param postion
	 * @return 相符合的用户列表
	 */
	public List<? extends IUser> findByPostion(String postion,
			String... selectColumns);

	// /**
	// * 根据部门Id和职位返回一个相符的用户列表
	// *
	// * @param deptId
	// * 部门Id
	// * @param postion
	// * 职位
	// * @return 相符合的用户列表
	// */
	// public List<IUser> findUsersByDeptIdAndPostion(String deptId, String
	// postion);

	/**
	 * 根据用户属性信息查询用户
	 * 
	 * @param userInfo
	 * @return 用户集合
	 */
	public List<? extends IUser> findByUserInfo(IUser userInfo);

	/**
	 * 根据给出的角色ID，找到所有与之关联的成员
	 * 
	 * @param roleId
	 *            给出的角色ID
	 * @return Collection<RoleMember> RoleMember集合
	 */
	public <S extends MemberRole> S findMemberRoleEntityByUsername(
			String username);

	/**
	 * 
	 * @param username
	 * @return
	 */
	public List<? extends IRole> findMemberRolesByUsername(String username);

}
